<?php
    if($this->getUsuario() != null){
		
		$idUsuarioVisualizado 	=	null;
		$acao					=	null;
		$modoEdicao 			=	null;
		
		if (defined('PARAMETRO_0') && constant('PARAMETRO_0') == 'usuario') {
			if (defined('PARAMETRO_1') && is_numeric(constant('PARAMETRO_1'))) {
				$acao 					=	constant('PARAMETRO_0');
				$idUsuarioVisualizado	=	constant('PARAMETRO_1');
				$modoEdicao 			=	defined('PARAMETRO_2') ? constant('PARAMETRO_2') == 'editar' ? true : false : false;
			}
			else {
				redireciona('404');
				exit;
			}
		}
		else {
			if (defined('PARAMETRO_0') && constant('PARAMETRO_0') == 'meusdados') {
				$acao 					=	constant('PARAMETRO_0');
				$idUsuarioVisualizado 	=	$this->getUsuario()->getIdUsuario();
				$modoEdicao 			=	defined('PARAMETRO_1') ? constant('PARAMETRO_1') == 'editar' ? true : false : false;
			}
			else {
				redireciona('404');
				exit;
			}
		}
		
    	if ($_POST) {
			if (isset($_POST['btnAtivarEdicao'])) {
				$_SESSION['constructore']['verUsuario']['btnAtivarEdicao']	=	true;
				if ($acao == 'usuario')
    				redireciona(array($acao, $idUsuarioVisualizado, 'editar'));
				else 
					redireciona(array($acao, 'editar'));
    		}
			else {
				if (isset($_POST['btnCancelarEdicao'])) {
					$_SESSION['constructore']['verUsuario']['btnCancelarEdicao']	=	true;
					adicionaMensagem(texto('MENSAGEM_MODIFICACOES_CANCELADAS'));
					if ($acao == 'usuario')
	    				redireciona(array($acao, $idUsuarioVisualizado));
					else 
						redireciona(array($acao));
				}
				else {
					if (isset($_POST['btnSalvarEdicao'])) {
						$_SESSION['constructore']['verUsuario']['btnAtivarEdicao']	=	true;
						
						$usuarioVisualizado		=	new Usuario($idUsuarioVisualizado);
						
						$validarTermoCompromisso =	true;
						
						//SE ADMINISTRADOR ESTIVER EDITANDO NAO PRECISO VALIDAR O TERMO DE COMPROMISSO
						if ($this->getUsuario()->getTipoCadastro() == 'Administrador' && $this->getUsuario()->getIdUsuario() != $usuarioVisualizado->getIdUsuario()) {
							$validarTermoCompromisso	=	false;
						}
						
						//DADOS PESSOAIS
						$strNome			=	isset($_POST['strNome']) ? $_POST['strNome'] : null;
						$fileFoto			=	isset($_FILES['fileFoto']) ? $_FILES['fileFoto'] : null;
						$removerFoto		=	$usuarioVisualizado->getFoto() != '' ? isset($_POST['checkRemoverFoto']) || $fileFoto['name'] != '' ? true : false : false;
						$strDataNascimento	=	getDataFormatoBd(pegaPost('strDataNascimento'));
						$strSexo			=	isset($_POST['strSexo']) ? $_POST['strSexo'] : null;
						$strCidade			=	isset($_POST['strCidade']) ? $_POST['strCidade'] : null;
						$strEstado			=	isset($_POST['strEstado']) ? $_POST['strEstado'] : null;
						
						//FINALIDADE DE USO
						$strFinalidadeUso	=	isset($_POST['strFinalidadeUso']) ? $_POST['strFinalidadeUso']  : null;
						
						//DADOS ACADEMICOS DE ALUNO
						$strInstituicao		=	isset($_POST['strInstituicao']) ? $_POST['strInstituicao'] : null;
						$strNivel			=	isset($_POST['strNivel']) ? $_POST['strNivel'] : null;
						$strCurso			=	isset($_POST['strCurso']) ? $_POST['strCurso'] : null;
						$strPeriodo			=	isset($_POST['strPeriodo']) ? $_POST['strPeriodo'] : null;
						
						//DADOS ACADEMICOS DE PROFESSOR
						$strInstituicao		=	isset($_POST['strInstituicao']) ? $_POST['strInstituicao'] : null;
						$strInstituto		=	isset($_POST['strInstituto']) ? $_POST['strInstituto'] : null;
						$strDepartamento	=	isset($_POST['strDepartamento']) ? $_POST['strDepartamento'] : null;
						$strTitulacao		=	isset($_POST['strTitulacao']) ? $_POST['strTitulacao'] : null;
						$strEnderecoInstitucional	=	isset($_POST['strEnderecoInstitucional']) ? $_POST['strEnderecoInstitucional'] : null;
						$strTelefoneInstitucional	=	isset($_POST['strTelefoneInstitucionalDDD']) && isset($_POST['strTelefoneInstitucionalPrefixo']) && isset($_POST['strTelefoneInstitucionalSufixo']) ? $_POST['strTelefoneInstitucionalDDD'] . $_POST['strTelefoneInstitucionalPrefixo'] . $_POST['strTelefoneInstitucionalSufixo'] : null;			
						$strCursosPretendidos		=	isset($_POST['strCursosPretendidos']) ? $_POST['strCursosPretendidos'] : null;
						
						//DADOS DE LOGIN
						$strEmail			=	isset($_POST['strEmail']) ? $_POST['strEmail'] : null;
						$strConfirmarEmail	=	isset($_POST['strConfirmarEmail']) ? $_POST['strConfirmarEmail'] : null;
						$strConfirmarEmail	=	$strEmail == $usuarioVisualizado->getEmail() ? $usuarioVisualizado->getEmail() : $strConfirmarEmail;
						$strSenha			=	isset($_POST['strSenha']) ? $_POST['strSenha'] : null;
						$strConfirmarSenha	=	isset($_POST['strConfirmarSenha']) ? $_POST['strConfirmarSenha'] : null;
						
						//TERMO DE COMPROMISSO
						$strConcordarTermo	=	isset($_POST['strConcordarTermo']) ? $_POST['strConcordarTermo'] : null;
						$strConcordarTermo	=	$strFinalidadeUso == $usuarioVisualizado->getTipoCadastro() ? 'sim' : $strConcordarTermo;
							
						if ($usuarioVisualizado->editar($usuarioVisualizado->getIdUsuario(), $strNome, $fileFoto, $usuarioVisualizado->getFoto(), $removerFoto, $strDataNascimento, $strSexo, $strCidade, $strEstado, $strFinalidadeUso, $usuarioVisualizado->getTipoCadastro(), $strInstituicao, $strNivel, $strCurso, $strPeriodo, $strInstituicao, $strInstituto, $strDepartamento, $strTitulacao, $strEnderecoInstitucional, $strTelefoneInstitucional, $strCursosPretendidos, $strEmail, $strConfirmarEmail, $strSenha , $strConfirmarSenha, $strConcordarTermo, $validarTermoCompromisso)) {
							
							unset($_SESSION['constructore']['verUsuario']);
													
							if($usuarioVisualizado->getIdUsuario() == $this->getUsuario()->getIdUsuario()){
								$_SESSION['constructore']['usuario']	=	serialize(new Usuario($usuarioVisualizado->getIdUsuario()));
							}
							
							if ($acao == 'usuario')
			    				redireciona(array($acao, $idUsuarioVisualizado));
							else 
								redireciona(array($acao));
						}
						else {
							$_SESSION['constructore']['verUsuario']	=	$_POST;
							$_SESSION['constructore']['verUsuario']['validarTermoCompromisso']	=	$validarTermoCompromisso;
							$_SESSION['constructore']['verUsuario']['strNovaFinalidadeUso']	=	$strFinalidadeUso;
							if ($acao == 'usuario')
			    				redireciona(array($acao, $idUsuarioVisualizado, 'editar'));
							else 
								redireciona(array($acao, 'editar'));
						}
					}
					else {
						redireciona(array('404'));
					}
				}
			}
    	}
		else {
			$usuarioVisualizado		=	new Usuario($idUsuarioVisualizado);
			
			//CONFIGURANDO POSSIBILIDADES DE ACAO DO USUARIO
			$possivelEditar					=	false;
			$possivelTornarAdministrador	=	false;
			$possivelVerDadosPrivados		=	false;
			
			if ($usuarioVisualizado->getIdUsuario() != null && (!$usuarioVisualizado->getApagado() || $this->getUsuario()->getTipoCadastro() == 'Administrador')) {
				
				//TODO Outras formas de ver se é possível ver o email do usuario...
				if ($this->getUsuario()->getTipoCadastro() == 'Administrador' || $this->getUsuario()->getIdUsuario() == $usuarioVisualizado->getIdUsuario()) {
					$possivelVerDadosPrivados	=	true;
				}
				
				if ($this->getUsuario()->getTipoCadastro() == 'Administrador' || $this->getUsuario()->getIdUsuario() == $usuarioVisualizado->getIdUsuario()) {
					$possivelEditar	=	true;
					if ($this->getUsuario()->getTipoCadastro() == 'Administrador')
						$possivelTornarAdministrador 	=	true;
				}
				
				if (!($modoEdicao && !$possivelEditar)) {
					
					$validarTermoCompromisso	=	(isset($_SESSION['constructore']['verUsuario']) && isset($_SESSION['constructore']['verUsuario']['validarTermoCompromisso'])) ? $_SESSION['constructore']['verUsuario']['validarTermoCompromisso'] : false ;
					
					//CONFIGURA OS DADOS DO USUARIO PARA APARECEREM NOS CAMPOS
					if ($modoEdicao && !isset($_SESSION['constructore']['verUsuario']['btnSalvarEdicao'])) {
						
						$dadosUsuario	=	array();
						
						$dadosUsuario['strNome']				=	$usuarioVisualizado->getNome();
						$dadosUsuario['strDataNascimento']		=	$usuarioVisualizado->getDataNascimento() != '' ? getDataFormatada($usuarioVisualizado->getDataNascimento()) : NULL;
						$dadosUsuario['strSexo']				=	$usuarioVisualizado->getSexo();
						$dadosUsuario['strCidade']				=	$usuarioVisualizado->getCidade();
						$dadosUsuario['strEstado']				=	$usuarioVisualizado->getEstado();
						$dadosUsuario['strFinalidadeUso']		=	(isset($_SESSION['constructore']['verUsuario']) && isset($_SESSION['constructore']['verUsuario']['strNovaFinalidadeUso'])) ? $_SESSION['constructore']['verUsuario']['strNovaFinalidadeUso'] : $usuarioVisualizado->getTipoCadastro();
						
						$dadosUsuario['strInstituicao']			=	$usuarioVisualizado->getInstituicao();
						$dadosUsuario['strNivel']				=	$usuarioVisualizado->getAlunoNivel();
						$dadosUsuario['strCurso']				=	$usuarioVisualizado->getAlunoCurso();
						$dadosUsuario['strPeriodo']				=	$usuarioVisualizado->getAlunoPeriodo();
						
						$dadosUsuario['strInstituto']			=	$usuarioVisualizado->getProfessorInstituto();
						$dadosUsuario['strDepartamento']		=	$usuarioVisualizado->getProfessorDepartamento();
						$dadosUsuario['strTitulacao']			=	$usuarioVisualizado->getProfessorTitulacao();
						$dadosUsuario['strEnderecoInstitucional']			=	$usuarioVisualizado->getProfessorEnderecoInstitucional();
						$dadosUsuario['strTelefoneInstitucionalDDD']		=	substr($usuarioVisualizado->getProfessorTelefoneInstitucional(), 0, 2);
						$dadosUsuario['strTelefoneInstitucionalPrefixo']	=	substr($usuarioVisualizado->getProfessorTelefoneInstitucional(), 2, 4);
						$dadosUsuario['strTelefoneInstitucionalSufixo']		=	substr($usuarioVisualizado->getProfessorTelefoneInstitucional(), 6, 4);
						$dadosUsuario['strCursosPretendidos']	=	$usuarioVisualizado->getProfessorCursosPretendidos();
						
						$dadosUsuario['strEmail']				=	$usuarioVisualizado->getEmail();
						
						$_SESSION['constructore']['verUsuario']	=	$dadosUsuario;
					}
					
					//CONFIGURANDO TITULO
					$this->getSmarty()->assign('TITULO_BARRA_NAVEGADOR', texto('TITULO_BARRA_NAVEGADOR', array(texto('AREA_USUARIO', array(nomeSobrenome($usuarioVisualizado->getNome()))))));
					
					//CONFIGURANDO NAVEGACAO
					$this->getSmarty()->assign('TEXTO_NAVEGACAO', texto('AREA_USUARIO', array(nomeSobrenome($usuarioVisualizado->getNome()))));
					
					//CONFIGURANDO LISTAS
					$this->getSmarty()->assign('listaEstados', getEstados());
					$this->getSmarty()->assign('listaNiveis', getNiveis());
					$this->getSmarty()->assign('listaPeriodos', getPeriodo());
					$this->getSmarty()->assign('listaTitulacoes', getTitulacoes());
					
					$this->getSmarty()->assign('TERMO_DE_COMPROMISSO', isset($_SESSION['constructore']['verUsuario']['strFinalidadeUso']) ? $_SESSION['constructore']['verUsuario']['strFinalidadeUso'] == 'Aluno' ? texto('DADOS_TERMO_DE_COMPROMISSO_ALUNO') : texto('DADOS_TERMO_DE_COMPROMISSO_PROFESSOR') : '');
					
					//CONFIGURANDO TEXTOS QUE RECEBEM PARAMETROS
					$this->getSmarty()->assign('ALT_FOTO_USUARIO', texto('ALT_FOTO_USUARIO'));
					$this->getSmarty()->assign('TITLE_FOTO_USUARIO', texto('TITLE_FOTO_USUARIO', array($usuarioVisualizado->getNome())));
					
					//SETA UMA MENSAGEM PARA O ADMINISTRADOR SE O USUARIO ESTIVER APAGADO
					if ($usuarioVisualizado->getApagado())
						adicionaMensagem(texto('MENSAGEM_USUARIO_APAGADO'));
						
					//SETA UMA MENSAGEM PARA O ADMINISTRADOR SE O USUARIO NAO CONCORDOU COM O TERMO
					if (!$usuarioVisualizado->getTermoCompromisso() && $this->getUsuario()->getTipoCadastro() == 'Administrador')
						adicionaMensagem(texto('MENSAGEM_USUARIO_NAO_CONCORDOU_COM_TERMO'));					
					
					//ASSIGNS PARA O TEMPLATE
					$this->getSmarty()->assign_by_ref('usuarioVisualizado', $usuarioVisualizado);
					
					$this->getSmarty()->assign('modoEdicao', $modoEdicao);
					$this->getSmarty()->assign('possivelEditar', $possivelEditar);
					$this->getSmarty()->assign('possivelTornarAdministrador', $possivelTornarAdministrador);
					$this->getSmarty()->assign('possivelVerDadosPrivados', $possivelVerDadosPrivados);
					$this->getSmarty()->assign('validarTermoCompromisso', $validarTermoCompromisso);
					
					$this->exibir('usuario');
					unset($_SESSION['constructore']['verUsuario']);
				}
				else {
					redireciona(array('404'));
				}
			}
			else {
				redireciona(array('404'));
			}
		}
	}
	else {
		adicionaMensagem(texto('MENSAGEM_ERRO_USUARIO_NAO_LOGADO'),'erro');
		redireciona(array('principal'));
	}
?>